## Code Review

[![Code Review: как это и зачем](https://img.youtube.com/vi/EKL6NiIQ6ZU/0.jpg)](https://www.youtube.com/watch?v=EKL6NiIQ6ZU)
[![Семинар: Code Review, ответы на вопросы](https://img.youtube.com/vi/AgH4OAKbmkM/0.jpg)](https://www.youtube.com/watch?v=AgH4OAKbmkM)

Задачи Code Review:
- Улучшение качества кода и поиск лучших решений
- Повышение квалификации разработчиков
- Передача знаний и изучение работы коллег для группового владения кодом
- Поиск лучших решений
- Граничные случаи

Почему делаем Code Review:
- Замыленный глаз
- Что, если разработчика переедет автобус?
- Команда эффективнее разработчиков-одиночек

Что ищем на Code Review:
- Соответствие структуре и архитектуре проекта
- Соответствие техническому заданию
- Читаем ли код коллегами, понятно ли всем именование
- Как можно повысить информативность кода
- Возможно ли улучшение метрик сложности алгоритмов
  - Возможно, стоит изменить структуры данных
  - Оптимизация алгоритмов
  - Другие алгоритмы
- Состояние гонки
- Утечки памяти
- Безопасность
- Антипаттерны
- Обработка ошибок
- Лишние зависимости или из замена
- Улучшение структуры и интеграции программных компонентов
  - Уменьшение зацепления
  - Уведичение связности кода
- Вредные привычки

Чего не ищем (должно быть автоматизировано в CI):
- Стандарты кодирования (кроме первого случая)
  - Вопросы стиля
  - Правила именования идентификаторов
- Повторный код
- Покрытие тестами
- Метрики

Процесс создания и принятия Pull Request:
- Когда подаем?
- Зачем? У каждого PR должна быть цель
- Кого добавляем?
- Как быстро обрабатываем?
- Как обсуждаем?
- Консенсус
- LGTM

Проблемы и о чем нужно помнить:
- Code Review занимает время
- Раздражает
- Сведение счетов
- Доказать кто круче
- Понятность запроса от инициатора
  - Просто странный код без всяких комментариев и цели ревью
  - Почему меня просят про Code Review?
  - Дополнительные вводные и комментарии
- Понятность отзыва от ревьюера
  - Не пишем: это что-то странное тут...
  - Не сводим к формальностям
  - Не пишем повестей на много страниц
- Что бывает, когда много изменний в одном PR
- Что бывает, когда мало изменний в одном PR
- Почему лучше сначала планировать разработку
- Почему лучше делать тесты отдельным коммитом
- Начните с высокого уровня
- Пред коммитом сами просмотрите
- Избегайте новых коммитов во время PR
- По возможности избегайте альтерных но не связанных PR
- Отвечайте на вопросы
